
/****************************************************
  @Title: 数据结构实验
  @Name: <实验3-4> 循环队列的应用--匹配舞伴
  @Object:
      [实验目的] 循环队列的应用。
      [试验任务] 实现舞会上男女舞伴的自动匹配。
           舞会上先后到达男士和女士若干人，第一轮按照
           到来的先后顺序，男女搭配一组，如果有剩下的，
           等下一轮首先匹配。
           打印出1-3轮的匹配情况。 
          
      [实验提示] 
           1. 在文件 sqqueue.h 中完成循环队列的实现 
 
           2. 根据两个队列元素个数，如何计算能匹配
              多少对舞伴

           3. 前一轮尚未轮到的，在下一轮中先匹配，
              如何处理，要完成多轮匹配。
              提示：匹配后继续加入队列中。 
  @Files:
      app0304.cpp [*]
         测试循环队列的主程序 
      sqqueue.h [*]
         循环队列的实现 
      dance.txt [*]
         舞伴数据文件 
  @Usage:
      请查看"TO-DO列表",根据要求完成代码
  @Copyright: BTC 2004, Zhuang Bo
  @Author: Zhuang Bo
  @Date: 2004
  @Description:
*****************************************************/

#include <stdio.h>
#include <stdlib.h>

struct Person {
    char name[20]; //名字 
    char sex;      //男'M';女'F'
};

#define ElemType Person /* 队列中数据元素的类型 */
#include "sqqueue.h"

////////////////////////////////////////////
//主程序 
int main()
{
    //用两个队列存放男士和女士
    SqQueue maleDancers, femaleDancers;
    
    //从文件dance.txt中读取数据
    FILE *fin=0;
    if((fin=fopen("dance.txt","r"))==0) {
        printf("错误: 不能打开文件 dance.txt\n"); 
        exit(1);
    }
    while(!feof(fin)) {
        //读出一条记录 
        Person p;
        p.sex = fgetc(fin);
        fgets(p.name, 20, fin);
        /* TODO (#1#): 根据性别将 p 加入对应的队列 */
        //------------------------------------------
    }
    
    //匹配舞伴
    int npair; //一轮中匹配舞伴数(对)
    /* TODO (#2#): 计算能够匹配多少对舞伴 */
    // npair = -------------------------------------
    
    //计算并打印出1-3轮的匹配结果 
    for(int round=0; round<3; round++) {
        /* TODO (#1#): 计算并打印第round轮匹配结果 */
        //------------------------------------------
    }
        
    system("pause"); //暂停 
}

////////////////////////////////////////////
//函数的定义 

